package org.seefly.iprint.service;

import org.seefly.iprint.entity.*;
import org.seefly.iprint.vo.ItemPriceVo;
import org.seefly.iprint.vo.OrderQueryVo;

import java.math.BigDecimal;
import java.util.List;

/**
 * 订单模块
 * @author liujianxin
 * @date 2018年3月30日 下午3:57:50
 * @version 1.0.0
 */
public interface OrderService {

    /**
     * 持久化订单
     */
    void addOrder(Orders od);

    /**
     * 查询价格项表，获取对应价格
     * @param vo 包含类型编号，项编号
     * @return 对应价格
     */
    BigDecimal getItemPrice(ItemPriceVo vo);

    /**
     * 根据OrderItem中的title不同查询不同的表
     */
    BigDecimal findPrice(OrderItem oi);

    /**
     * 查询其他收费项表获取价格
     */
    BigDecimal findServicedPrice(OrderItem oi);

    /**
     * 添加订单项
     */
    void addOrderItem(OrderItem e);

    /**
     * 查询最近7天的交易金额，按天显示
     */
    List<SalesData> salesData();
    

    /**
     * 条件查询订单
     */
    PageBean<OrderItem> getOrdersByCondition(OrderQueryVo vo);

    /**
     * 获取过去七天中各类商品的销售数量，按类别分类
     */
    List<SalesCount> getSalesCount();

    /**
     * 获取过去七天中各类商品销售金额，按商品分类
     */
    List<EchartsPojo> getSalesPriceCount();

    /**
     *  通过id获取订单项
     */
    OrderItem getOrderItem(Integer id);

    /**
     * 通过状态分页查询订单
     * @param currPage 当前页
     * @param pageSize 页面大小
     * @param status  订单状态
     */
    List<OrderItem> getOrdersList(Integer currPage, Integer pageSize, String status);
   
    /**
     * 通过状态查询订单总数
     * @param status 订单状态
     */
    Integer getOrdersCount(String status);

    /**
     * 更新订单状态
     * @param id 订单项ID 不是订单ID
     */
    void updateOrderStatus(Integer id, String success);
    
}
